<?php
@set_magic_quotes_runtime(0);
@date_default_timezone_set('Asia/Shanghai');

// CACHE TIME CONSTANTs
define('CACHE_SECOND',      1);
define('CACHE_MINUTE',      60);
define('CACHE_HOUR',        3600);
define('CACHE_DAY',         86400);
define('CACHE_WEEK',        604800);
define('CACHE_MONTH',       2592000);
define('CACHE_YEAR',        31536000);
define('CACHE_TODAY',       strtotime("tomorrow") - time());

//信息审核状态

//程序运行开始时间
define('START_TIME', microtime(true));
//程序默认编码
define('CHARSET',  'utf-8');
@header("Content-type: text/html; charset=".CHARSET);
//站点跟目录常量设置（项目为二级目录）
define('DOCUMENT_ROOT_DS',        DIRECTORY_SEPARATOR);
define('DOCUMENT_ROOT_PATH',$_SERVER['DOCUMENT_ROOT'] . DOCUMENT_ROOT_DS);//服务器跟目录
//公用核心文件目录常量设置
define('COMMON_DS',        DIRECTORY_SEPARATOR);
define('COMMON_PATH', dirname(__FILE__) . COMMON_DS);

define('COMMON_CONFIG_PATH', COMMON_PATH . 'configs' . COMMON_DS);
define('COMMON_LIB_PATH', COMMON_PATH . 'libs' . COMMON_DS);
define('COMMON_VENDOR_PATH', COMMON_PATH . 'vendor' . COMMON_DS);

//数据存储默认连接
define('DEFAULT_REDIS_NAME','default');//redis
define('DEFAULT_DB_NAME', 'default');//redis
//开启记录日志时间
define('LOG_DB_LONGTIME',    false);
define('LOG_REDIS_LONGTIME',    false);

// 运行模式
// dev:开发模式
// pro:产品模式
if (! defined('RUNNING_MODE'))
    define('RUNNING_MODE',          'dev');
// 这里会修改为自定义错误处理，替换默认错误处理
// 开发模式的话，提供更好的调试信息
// 产品模式的话，所有错误、调试信息记入日志
if (RUNNING_MODE == 'dev')
{
    error_reporting( E_ALL ^ E_NOTICE );
}
else
{
    error_reporting( 0 );
}

//SESSION COOKIES 配置
//注意：session 相关配置修改要放到session_start()之前 也就是 本项目中 Session.class.php 之前
define('SITE_PREFIX',  'wf_site_');
define('SESS_LIFTTIME',  CACHE_DAY);//缓存时间一天
define('PASSWORD_PREFIX',  'wf@pwd_pre');
define('SESS_SAVE_PATH',  DOCUMENT_ROOT_PATH . 'Session');

//不使用 GET/POST 变量方式
session_name(substr(SITE_PREFIX,0,-1));
//设置垃圾回收最大生存时间
session_cache_expire(SESS_LIFTTIME/60);
ini_set('session.gc_maxlifetime', SESS_LIFTTIME);
session_save_path(SESS_SAVE_PATH);

//程序调试配置
if (isset($_GET['debug']) && !defined('DEBUG'))
{
    define('DEBUG', true);
}
else
{
    define('DEBUG', false);
}

function exceptionDefaultHandler(Exception $e)
{
    l($e->getMessage(), 'default_exception');
}
set_exception_handler('exceptionDefaultHandler');

include COMMON_CONFIG_PATH . 'config.'.RUNNING_MODE.'.php';
include COMMON_PATH . 'Function.php';

if (defined('RUNNING_MODE') &&  RUNNING_MODE == 'dev' && DEBUG)
{
    include COMMON_LIB_PATH . 'Debug.class.php';

    if (function_exists('xhprof_enable')){
        xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    }

    /*
     * 1、当页面被用户强制停止时
     * 2、当程序代码运行超时时
     * 3、当ＰＨＰ代码执行完成时
     */
    register_shutdown_function('xhprof_save');
    register_shutdown_function('debug_info');
}

//加载核心类库
include COMMON_LIB_PATH . 'VarStorage.class.php';//变量存储类
include COMMON_LIB_PATH . 'Session.class.php';//session操作类
$_session = Session::getInstance();
include COMMON_LIB_PATH . 'Input.class.php';//表单提交值过滤类
$_input = Input::getInstance();
/*-end-*/
include COMMON_LIB_PATH . 'Model.class.php';//Model类
include COMMON_LIB_PATH . 'DataReader.class.php';//数据读取类
include COMMON_LIB_PATH . 'DBReader.class.php';//数据库操作类
//include COMMON_LIB_PATH . 'RedisReader.class.php';//redis缓存操作类
include COMMON_LIB_PATH . 'Response.class.php';//返回值类
include COMMON_LIB_PATH . 'DB.class.php';//DB类
include COMMON_LIB_PATH . 'ConsistentHash.class.php';//分布式Hash类
//include COMMON_LIB_PATH . 'RedisStorageInterface.class.php';//redis封装接口类
include COMMON_LIB_PATH . 'Template.class.php';//模板类
include COMMON_LIB_PATH . 'Controller.class.php';//后台控制器类
include COMMON_LIB_PATH . 'CacheFile.class.php';//文件缓存类
?>
